// 导入vue-router
import Vue from 'vue';
import Router from 'vue-router';
// 导入工具函数
import { getLoginInfo } from '../utlis/common';

// 注册插件
Vue.use(Router);
// 定义路由规则
// 导入页面组件

const Login=()=>import('../views/Login');
const Layout=()=>import('../views/Layout');
// 菜单管理
const Menu=()=>import('../views/menu/Index');
// 角色管理
const Role=()=>import('../views/role/Index');
// 管理员管理
const Admin=()=>import('../views/admin/Index');
// 分类管理
const Cate=()=>import('../views/cate/Index');
// 规格管理
const Specs=()=>import('../views/specs/Index');
// 商品管理
const Goods=()=>import('../views/goods/Index');
// 活动管理
const Seckill=()=>import('../views/seckill/Index');
// 会员管理
const Member=()=>import('../views/member/Index');
// 管理中心
const Home=()=>import('../views/Home');
// 404
const NotFound=()=>import('../views/NotFound');

const routes=[
    {
        name:'login',
        path:'/login',
        component:Login,
        meta:{
            title:'管理员登录',      // 页面标题
            requireLogin:false      // 是否需要登录
        }
    },
    {
        name:'layout',
        path:'/',
        component:Layout,
        redirect:'/home',
        meta:{
            title:'后台管理系统',
            requireLogin:true
        },
        children:[
            {
                name:'home',
                path:'/home',
                component:Home,
                meta:{
                    title:'管理中心',
                    requireLogin:true
                }
            },
            {
                name:'goods',
                path:'/goods',
                component:Goods,
                meta:{
                    title:'商品管理',
                    requireLogin:true
                }
            },
            {
                name:'member',
                path:'/member',
                component:Member,
                meta:{
                    title:'会员管理',
                    requireLogin:true
                }
            },
            {
                name:'seckill',
                path:'/seckill',
                component:Seckill,
                meta:{
                    title:'活动管理',
                    requireLogin:true
                }
            },
            {
                name:'menu',
                path:'/menu',
                component:Menu,
                meta:{
                    title:'菜单管理',
                    requireLogin:true
                }
            },
            {
                name:'role',
                path:'/role',
                component:Role,
                meta:{
                    title:'角色管理',
                    requireLogin:true
                }
            },
            {
                name:'admin',
                path:'/admin',
                component:Admin,
                meta:{
                    title:'管理员管理',
                    requireLogin:true
                }
            },
            {
                name:'cate',
                path:'/cate',
                component:Cate,
                meta:{
                    title:'分类管理',
                    requireLogin:true
                }
            },
            {
                name:'specs',
                path:'/specs',
                component:Specs,
                meta:{
                    title:'规格管理',
                    requireLogin:true
                }
            }
        ]
    },
    {
        path:'*',
        component:NotFound,
        meta:{
            title:"404",
            requireLogin:false
        }
    }
];

// 创建路由实例
const router=new Router({
    routes
});

// 前置导航守卫
router.beforeEach(function(to,from,next){
     // 通过本地存储获取登录信息
     const loginInfo=getLoginInfo();
    // 需要登录
    if(to.meta.requireLogin){
        // 如果没有登录
        if(!loginInfo.token){
            // 重定向到登录页面
            // next('/login');
            return next({name:'login',query:{url:to.fullPath}});
        }
    }
    // 判断当前用户访问的页面是否在其访问权限内
    if(!loginInfo.menus_url){
        loginInfo.menus_url=[];
    }
    const menus_url=loginInfo.menus_url.concat(['/','/home','/login']);
    if(!menus_url.includes(to.path)){
        return next('/home');
    }
    next();
    // 动态设置页面标题
    document.title=to.meta.title;
});

// 导出路由实例
export default router;